import json
import sys
import os

def compress_json(input_file: str, output_file: str = None) -> None:
    """
    将JSON文件压缩成一行
    
    Args:
        input_file: 输入JSON文件的路径
        output_file: 输出文件的路径，如果为None则覆盖原文件
    """
    try:
        # 读取JSON文件
        with open(input_file, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        # 如果没有指定输出文件，则覆盖原文件
        if output_file is None:
            output_file = input_file
        
        # 将JSON写入文件，设置separators去除空白字符
        with open(output_file, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, separators=(',', ':'))
        
        print(f"JSON压缩完成！输出文件：{output_file}")
        
    except json.JSONDecodeError as e:
        print(f"JSON解析错误：{str(e)}")
    except Exception as e:
        print(f"处理过程中出现错误：{str(e)}")

def main():
    # 获取命令行参数
    if len(sys.argv) < 2:
        print("使用方法：")
        print("1. 压缩并覆盖原文件：python json压缩.py input.json")
        print("2. 压缩到新文件：python json压缩.py input.json output.json")
        return
    
    input_file = sys.argv[1]
    output_file = sys.argv[2] if len(sys.argv) > 2 else None
    
    if not os.path.exists(input_file):
        print(f"错误：输入文件 '{input_file}' 不存在")
        return
    
    compress_json(input_file, output_file)

if __name__ == "__main__":
    main()